package Mediator;

import org.springframework.boot.autoconfigure.security.SecurityProperties;

import java.util.Date;

/**
 * @Author: Cjj
 * 中介者模式：
 *   是用来降低多个对象和类之间的通信复杂性，属于行为型模式。
 *   中介者模式定义了一个中介对象来封装一系列对象之间的交互。中介者使各对象之间不需要
 *   显式地相互引用，从而使其耦合松散,且可以独立地改变它们之间的交互。
 * 意图：
 *  通过引入一个中介者对象来封装和协调多个对象之间的交互,从而降低对象间的耦合度。
 * 主要解决的问题
 *  解决对象间复杂的一对多关联问题,避免对象之间的高度耦合,简化系统结构。
 * 使用场景
 *  当系统中多个类相互耦合,形成网状结构时。
 * 实现方式：
 *  定义中介者接口：规定中介者必须实现的接口。
 *  创建具体中介者：实现中介者接口,包含协调各同事对象交互的逻辑。
 *  定义同事类：各个对象不需要显式地相互引用,而是通过中介者来进行交互。
 *优点：
 *  1.降低复杂度：将多个对象间的一对多关系转换为一对一关系。
 *  2.解耦：对象之间不再直接引用,通过中介者进行交互。
 *  3.符合迪米特原则：对象只需知道中介者,不需要知道其他对象
 *缺点：
 *  中介者复杂性：中介者可能会变得庞大和复杂,难以维护。
 */
public class ChatRoom {
    public static void showMessage(User user, String message) {
        System.out.println(new Date().toString() + " [" + user.getName() + "] : " + message);
    }
}
